package com.example.kt_base.s2

//TODO 31.Kotlin语言的函数内联学习
fun main() {
    //第三种方式
    loginAPI3("Jenny","123456"){msg:String,code:Int->
        println("最终登录情况：msg:$msg,code:$code")
    }

}

//模拟数据库 SQLServer
const val USER_NAME_SAVE_DB3="Jenny"
const val USER_PSW_SAVE_DB3="123456"

//此函数使用lambda作为参数，就需要声明成内联，如果不用使用内联，在调用端会生成多个对象来完成lambda调用（性能损耗）
//登录API 模拟前端
  private inline fun loginAPI3(userName:String, userPSW:String, responseResult:(String, Int)->Unit){
    if (userName==null || userPSW==null){
        return
    }
    if (userName.length>3 && userPSW.length>3){
        if (wbeServiceLoginAPI(userName,userPSW)){
            //登录成功
            responseResult("login success",200)
        }
        else{
            //登录失败
            responseResult("login error",444)

        }
    }

}

//此函数没有使用lambda作为参数，就不需要声明成内联
//登录的API 服务器
private fun wbeServiceLoginAPI(name:String,psw:String):Boolean{
     return name== USER_NAME_SAVE_DB && psw== USER_PSW_SAVE_DB
}

